<?php
class Categorias extends APP_Controller{
    public function __construct() {
        parent::__construct();
        $this->isValidAjaxRequest();
        $this->load->model('Tablas_model','categorias');
        $this->setPageSize(12);
    }

    /**
     * Llamada a la pagina principal del modulo de compras
     */
    function index()
    {
        $data = array(
            'idTab'=>$this->input->post('id'),
            'pageSize'=>$this->getPageSize(),
            'title'=>  get_class($this)
        );
        $this->load->view('categorias/main',$data);
    }

    /**
     * Retorna las compras realizadas
     */
    function paginateList()
    {
        $start = $this->input->post('start');
        $limit = $this->input->post('limit');

        if(empty ($start)) $start=0;
        if(empty ($limit)) $limit=$this->getPageSize();

        $categorias = $this->categorias->getPaginateResult(get_class($this),$start,$limit);
        $count = $this->categorias->countAll(get_class($this));

        $paging = array(
            'success'=>true,
            'total'=>$count,
            'data'=> $categorias
        );
        echo json_encode($paging);
    }

    /**
     * Llama al formulario de categorias
     */
    function form()
    {
        $this->load->view('categorias/form',array('gridPanelId'=>$this->input->post('gridPanelId')));
    }

    /*
     *
     */
    function save()
    {
        $this->load->library('form_validation');

        $rs = array();
        $successMsj = 'Los datos del proveedor fueron almacenados exitosamente.';
        $errorMsj = 'Los datos del proveedor no pudieron ser almacenados. Por Favor intente de nuevo';

        $this->form_validation->set_rules('nombre', 'Nombre', 'required');

        if($this->form_validation->run()){
            try {
                $this->categorias->setNombre($this->input->post('nombre'));
                $this->categorias->setPadreId(3);

                $this->categorias->add();
                $rs['msg'] = $successMsj;
                $rs['success'] = TRUE;
            } catch (Exception $exc) {
                echo $exc->getTraceAsString();
                $rs['msg'] = $errorMsj;
                $rs['success'] = FALSE;
            }
        }else{
            $this->load->helper('form');
            $rs['msg'] =  validation_errors();
            $rs['success'] = FALSE;
        }
        echo json_encode($rs);
    }

    /**
     * Almacena los datos provenientes de un gridpanel
     */
    function saveDataGrid()
    {

        try {
            $json = $this->input->post('data'); //Objeto json con los datos modificados en el gridPanel
            $rs = array();
            $successMsj = 'Los datos del proveedor fueron almacenados exitosamente.';
            $errorMsj = 'Los datos del proveedor no pudieron ser almacenados. Por Favor intente de nuevo';

            $categorias = json_decode($json);
            if(is_array($categorias)){
                foreach ($categorias as $categoria){
                    $this->categorias->setId($categoria->id);
                    $this->categorias->setNombre($categoria->nombre);
                    $this->categorias->setPadreId($categoria->padre_id);
                    if(!$this->categorias->update()){
                        throw new Exception('');
                    }
                }
            }elseif(is_object($categorias)){
                $this->categorias->setId($categorias->id);
                $this->categorias->setNombre($categorias->nombre);
                $this->categorias->setPadreId($categorias->padre_id);
                if(!$this->categorias->update()){
                    throw new Exception('');
                }
            }
            $rs['msg'] = $successMsj;
            $rs['success'] = TRUE;
        } catch (Exception $exc) {
            //echo $exc->getTraceAsString();
            $rs['msg'] = $errorMsj;
            $rs['success'] = FALSE;
        }
        echo json_encode($rs);
    }

    function llenarCombo()
    {
        $result = array(
            'success'=>true,
            'total' => $this->categorias->countAll(get_class($this)),
            'data'  => $this->categorias->getAllByPadre(get_class($this))
        );
        echo json_encode($result);
    }
}
?>